﻿/*
 * Creado por SharpDevelop.
 * Usuario: seba
 * Fecha: 04/09/2009
 * Hora: 01:29 p.m.
 * 
 * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar
 */
using System;
using MySql.Data.MySqlClient;
using System.Collections.Generic;
using System.Collections; 
using System.Drawing;
using System.Windows.Forms;
using System.Data; 
using System.IO;

namespace MYSQLClass
{
	/// <summary>
	/// Description of mysqlclass.
	/// </summary>
	public class mysqlclass
	{
		public DataTable Tabla = new DataTable();
		public string[] camposBD = new string[100];
		public static MySqlConnection DBConn = null;
		protected string servidorBD;
		protected string basededatos;
		protected string usuarioBD;
		protected string passwordBD;
		protected string puertoBD;
		protected string nombretabla;
		protected int posicion = 0;
		public string[] valorcampoBD = new String[100];
		public string[] establecervalorcampoBD = new string[100]; 
		
		public mysqlclass()
		{
			
		}

		public void Conectar()
		{
			#region Conecta a BD
			GTLib.XMLConfig.EnvVars Env = new GTLib.XMLConfig.EnvVars();
			Env.MasterEncryptKey = "sps";
			Env.Crypted = true;
			Env.Load("entorno.xml");
			
            //string basededatos = Env.GetValue("BD");
            string servidor = Env.GetValue("Servidor");
            string puerto = Env.GetValue("Puerto");
            string usuariobd = Env.GetValue("Usuario");
            string password = Env.GetValue("Pass");
            
            DBConn = new MySqlConnection("server=" + servidor + "; user id=" + usuariobd + "; password=" + password + "; database=" + this.BaseDeDatos + "; pooling=false");
            //DBConn = new MySqlConnection(String.Format("DATABASE=" + this.BaseDeDatos + "; SERVER=" + servidor + "; PORT=" + puerto + "; UID=" + usuariobd + "; PWD=" + password + ";"));
			//DBConn = new MySqlConnection(String.Format("DATABASE=pruebast; SERVER=localhost; PORT=5432; UID=postgres; PWD=123123123;"));
			try 
			{
				DBConn.Open();
				
			} catch(Exception ex) {
				System.Windows.Forms.MessageBox.Show("ERROR:" + ex.Message);
				Application.ExitThread();
				//return;
			}            
			
			//if(DBConn.State == System.Data.ConnectionState.Open) 
			//	DBConn.Close();			
            #endregion				
		}	
		
	
		#region Declaracion de propiedades
		public string ServidorBD
		{
			get	{return this.servidorBD;}
			set {this.servidorBD=value;}
		}			
	
		public string BaseDeDatos
		{
			get	{return this.basededatos;}
			set {this.basededatos=value;}
		}			

		public string UsuarioBD
		{
			get	{return this.usuarioBD;}
			set {this.usuarioBD=value;}
		}			
		
		public string PasswordBD
		{
			get	{return this.passwordBD;}
			set {this.passwordBD=value;}
		}			

		public string PuertoBD
		{
			get	{return this.puertoBD;}
			set {this.puertoBD=value;}
		}			

		public string NombreTabla
		{
			get	{return this.nombretabla;}
			set {this.nombretabla=value;}
		}					
		#endregion		

		#region Campos a listar
		public string[] Campoalistar
		{
			get {return this.campoalistar;}
			set {this.campoalistar=value;}
		}
		#endregion
		
		#region Campos BD
		protected string c_campoid;
		public string C_campoid
		{
			get	{return this.c_campoid;}
			set {this.c_campoid=value;}
		}			
		
		protected string c_insumo;		
		public string C_insumo
		{
			get	{return this.c_insumo;}
			set {this.c_insumo=value;}
		}			

		protected string c_cantidad;
		public string C_cantidad
		{
			get {return this.c_cantidad;}
			set	{this.c_cantidad=value;}
		}			
		protected string c_pie;
		public string C_pie
		{
			get {return this.c_pie;}
			set	{this.c_pie=value;}
		}			
		protected string c_fechaing;
		public string C_fechaing
		{
			get {return this.c_fechaing;}
			set	{this.c_fechaing=value;}
		}			
		protected string c_remito;
		public string C_remito
		{
			get {return this.c_remito;}
			set	{this.c_remito=value;}
		}			
		protected string c_proveedor;
		public string C_proveedor
		{
			get {return this.c_proveedor;}
			set	{this.c_proveedor=value;}
		}			
		protected string c_codigo;
		public string C_codigo
		{
			get {return this.c_codigo;}
			set	{this.c_codigo=value;}
		}			
		
		#endregion
		
		#region Campo a listar
		protected string[] campoalistar= new string [500];		
		public string[] Listar(string cadenaconsulta, string campolistado)
		{

			DataTable loc_dt2 = new DataTable();
			MySqlCommand cmdNQ2 = new MySqlCommand(cadenaconsulta, DBConn);
			MySqlDataAdapter loc_da2 = new MySqlDataAdapter(cmdNQ2);
			loc_da2.Fill(loc_dt2);

			string[] nombre2 = new string[loc_dt2.Rows.Count];
			string[] campoalistar= new string [loc_dt2.Rows.Count];
			string[] Campoalistar = new string[loc_dt2.Rows.Count];
			for(int i=0; i<=loc_dt2.Rows.Count-1; i++)
			{
				nombre2[i]=loc_dt2.Rows[i][campolistado].ToString();
				this.Campoalistar[i]=loc_dt2.Rows[i][campolistado].ToString();
			}

			return nombre2;			
		}		
		#endregion
		
		#region Actualizar Varios Registros
		public bool ActualizarVariosRegistros(string campoaactualizar, string valoracolocar, string condicion, bool mostrarmensaje)
		{
			MySqlCommand loc_Comm = new MySqlCommand();
			MySqlTransaction loc_Transaction = DBConn.BeginTransaction();

			loc_Comm.Connection = DBConn;
			String loc_SQLCmd = "";
			loc_SQLCmd = "UPDATE " + this.NombreTabla + 
				" SET " + campoaactualizar + " = " + valoracolocar + 
				"WHERE " + condicion;

			loc_Comm.CommandText = loc_SQLCmd;
			int iResultado = 0;

			try {
				iResultado = loc_Comm.ExecuteNonQuery();
				loc_Transaction.Commit();
				if(mostrarmensaje == true)
					System.Windows.Forms.MessageBox.Show("Registro Actualizado", "Mensaje", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
			} catch (Exception ex) {
				loc_Transaction.Rollback();
				System.Windows.Forms.MessageBox.Show("No se puede Actualizar", "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
			//	return;	
			}						

			return Convert.ToBoolean(iResultado);					
		}
		#endregion
		
		#region Actualizar		
		public bool Actualizar(int idactual, string campodeid)
		{
			
			MySqlCommand loc_Comm = new MySqlCommand();
			MySqlTransaction loc_Transaction = DBConn.BeginTransaction();

			loc_Comm.Connection = DBConn;
			String loc_SQLCmd = "";
			loc_SQLCmd = "UPDATE " + this.NombreTabla + 
				" SET insumo = '" + this.C_insumo + "', " +
				"cantidad = " + this.C_cantidad + ", " + 
				"pie = " + this.C_pie.Replace(",", ".") + ", " +
				"fechaing = '" + this.C_fechaing + "', " +
				"remito = '" + this.C_remito + "', " +
				"proveedor = '" + this.C_proveedor + "' " +
				"WHERE " + campodeid + " = " + idactual;

			loc_Comm.CommandText = loc_SQLCmd;
			int iResultado = 0;

			try {
				iResultado = loc_Comm.ExecuteNonQuery();
				loc_Transaction.Commit();
				System.Windows.Forms.MessageBox.Show("Registro Actualizado", "Mensaje", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
			} catch (Exception ex) {
				loc_Transaction.Rollback();
				System.Windows.Forms.MessageBox.Show("No se puede Actualizar", "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
			//	return;	
			}						

			return Convert.ToBoolean(iResultado);			

		}				
		#endregion

		#region Actualizar Registro
		public bool ActualizarRegistro(int idactual, string campodeid, bool ensilencio)
		{
			MySqlCommand loc_Comm = new MySqlCommand();
			MySqlTransaction loc_Transaction = DBConn.BeginTransaction();

			loc_Comm.Connection = DBConn;
			String loc_SQLCmd = "";

			int cantcampos = this.ObtenerCamposBD(this.nombretabla);
			string camp = "";
			string valorcamp = "";
			for(int x2=1; x2<=cantcampos-1; x2++)
			{
				camp = camp + camposBD[x2] + " = '" + establecervalorcampoBD[x2] + "', ";
			}		
			//System.Windows.Forms.MessageBox.Show(valorcamp);
			
			loc_SQLCmd = "UPDATE " + this.NombreTabla + " SET " + camp.Remove(camp.Length-2, 2) + " WHERE " + campodeid + " = " + idactual;			
			//System.Windows.Forms.MessageBox.Show(loc_SQLCmd);
			loc_Comm.CommandText = loc_SQLCmd;
			
			int iResultado = 0;
			
			try {
				iResultado = loc_Comm.ExecuteNonQuery();
				loc_Transaction.Commit();
				if(ensilencio == false)
				{
					System.Windows.Forms.MessageBox.Show("Registro Actualizado", "Mensaje", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
				}
			} catch (Exception ex) {
				loc_Transaction.Rollback();
				System.Windows.Forms.MessageBox.Show("No se puede Insertar", "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
				//return;	
			}			
						
			return Convert.ToBoolean(iResultado);						
		}
		#endregion
		
		#region Ingresar
		/// <summary>
		/// Ingresar un registro
		/// </summary>
		/// <param name="idautoinc ">true si el campo ID es serial, false si es integer</param>
		/// <param name="valorid ">pasar el valor del campo ID a guardar</param>
		/// <param name="ensilencio ">si es false muestra aviso</param>
		/// public bool Ingresar(string valoresdecampos)
		public bool Ingresar(bool idautoinc, int valorid, bool ensilencio)
		{
			MySqlCommand loc_Comm = new MySqlCommand();
			MySqlTransaction loc_Transaction = DBConn.BeginTransaction();

			loc_Comm.Connection = DBConn;
			String loc_SQLCmd = "";

			int cantcampos = this.ObtenerCamposBD(this.nombretabla);
			string camp = "";
			string valorcamp = "";
			
			for(int x2=1; x2<=cantcampos-1; x2++)
			{
				camp = camp + camposBD[x2] + ", ";
				valorcamp = valorcamp + "'" + establecervalorcampoBD[x2] + "', ";
			}		
			//System.Windows.Forms.MessageBox.Show(valorcamp);
			//loc_SQLCmd = "INSERT INTO " + this.NombreTabla + " (" + camp.Remove(camp.Length-2, 2) + ") VALUES (" + valoresdecampos + ")";			

			if(idautoinc == true) 
			{
				loc_SQLCmd = "INSERT INTO " + this.NombreTabla + " (" + camp.Remove(camp.Length-2, 2) + ") VALUES (" + valorcamp.Remove(valorcamp.Length-2, 2) + ")";
			} else {
				loc_SQLCmd = "INSERT INTO " + this.NombreTabla + " (" + camposBD[0] + ", " + camp.Remove(camp.Length-2, 2) + ") VALUES (" + valorid +", " + valorcamp.Remove(valorcamp.Length-2, 2) + ")";
			}

			
			//System.Windows.Forms.MessageBox.Show(loc_SQLCmd);
			loc_Comm.CommandText = loc_SQLCmd;
			
			int iResultado = 0;
			
			try {
				iResultado = loc_Comm.ExecuteNonQuery();
				loc_Transaction.Commit();
				if(iResultado==1 && ensilencio == false)
				{
					System.Windows.Forms.MessageBox.Show("Registro ingresado", "Mensaje", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
				}
			} catch (Exception ex) {
				loc_Transaction.Rollback();
				System.Windows.Forms.MessageBox.Show("No se puede Insertar", "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
				//return;	
			}			
						
			return Convert.ToBoolean(iResultado);			 
		}
		#endregion

		#region ingresa campo que contiene archivo
		public bool IngresarCampoArchivo(int id, string nombre, string rutadearchivo)
		{
			
			MySqlCommand loc_Comm = new MySqlCommand("INSERT INTO " + this.NombreTabla + " (id, nombre, archivo) VALUES (" + id.ToString()  + ", '" + nombre + "', @archivo)", DBConn);
			MySqlTransaction loc_Transaction = DBConn.BeginTransaction();

		
			byte[] stream = File.ReadAllBytes(rutadearchivo);
			loc_Comm.Parameters.Add("@archivo", stream);

			int iResultado = 0;
			
			try {
				iResultado = loc_Comm.ExecuteNonQuery();
				loc_Transaction.Commit();
				System.Windows.Forms.MessageBox.Show("Registro ingresado", "Mensaje", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
			} catch (Exception ex) {
				loc_Transaction.Rollback();
				System.Windows.Forms.MessageBox.Show("No se puede Insertar", "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
				//return;	
			}			
						
			return Convert.ToBoolean(iResultado);
		}
		#endregion
		
		#region recupera campo archivo
		public bool RecuperaCampoArchivo(string condicion, string rutaynombredearchivo)
		{
	        MySqlCommand com = new MySqlCommand("SELECT archivo FROM " + this.NombreTabla + " WHERE " + condicion, DBConn);
            DataTable dt = new DataTable();
            MySqlDataReader dr = com.ExecuteReader();
            dt.Load(dr);
            dr.Close();
            byte[] stream = (byte[])dt.Rows[0][0];
            File.WriteAllBytes(rutaynombredearchivo, stream);	
            return true;
		}
		#endregion		
		
		#region Obtiene Bytes Archivo
		public byte[] ObtenerBytesImagen(string condicion, string campoarchivo)
		{

			MySqlCommand comm=new MySqlCommand("SELECT " + campoarchivo + " FROM " + this.NombreTabla + " WHERE " + condicion, DBConn);						

			MySqlDataReader dr=null;
				dr=comm.ExecuteReader();

			byte [] aBytes=null;
			if (dr.Read())
			{
				aBytes=(byte[])dr.GetValue(0);

			}

			dr.Close();
			return aBytes;
		}		
		#endregion		
		
		#region Ingreso multiple
		/// <summary>
		/// Indicar los Valores de campo como ser: "valor1, valor2"
		/// </summary>
		/// <param name="valoresdecampos"></param>
		/// <returns></returns>
		/// public bool Ingresar(string valoresdecampos)
		public bool IngresarMultiple(string valores, bool ensilencio, bool idautoinc)
		{
			MySqlCommand loc_Comm = new MySqlCommand();
			MySqlTransaction loc_Transaction = DBConn.BeginTransaction();

			loc_Comm.Connection = DBConn;
			String loc_SQLCmd = "";

			int cantcampos = this.ObtenerCamposBD(this.nombretabla);
			string camp = "";
			for(int x2=1; x2<=cantcampos-1; x2++)
			{
				camp = camp + camposBD[x2] + ", ";
			}		
			
			if(idautoinc == true) 
			{
				loc_SQLCmd = "INSERT INTO " + this.NombreTabla + " (" + camp.Remove(camp.Length-2, 2) + ") VALUES " + valores;			
			} else {
				loc_SQLCmd = "INSERT INTO " + this.NombreTabla + " (" + camposBD[0] + ", " + camp.Remove(camp.Length-2, 2) + ") VALUES " + valores;			
				
			}
			
			//System.Windows.Forms.MessageBox.Show(loc_SQLCmd);
			loc_Comm.CommandText = loc_SQLCmd;
			
			int iResultado = 0;
			
			try {
				iResultado = loc_Comm.ExecuteNonQuery();
				loc_Transaction.Commit();
				if(ensilencio == false)
				{
					System.Windows.Forms.MessageBox.Show("Registro ingresado", "Mensaje", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
				}
			} catch (Exception ex) {
				loc_Transaction.Rollback();
				System.Windows.Forms.MessageBox.Show("No se puede Insertar", "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
				//return;	
			}			
						
			return Convert.ToBoolean(iResultado);			 
		}
		#endregion		
		
		#region Actualizar Reflection
		/// <summary>
		/// Indicar los Valores de campo como ser: "campo = valor1, campo2 = valor2"
		/// </summary>
		/// <param name="valoresdecampos"></param>
		/// <returns></returns>
		public bool ActualizarRegistros(string valoresdecampos, string condicion)
		{
			MySqlCommand loc_Comm = new MySqlCommand();
			MySqlTransaction loc_Transaction = DBConn.BeginTransaction();

			loc_Comm.Connection = DBConn;
			String loc_SQLCmd = "";

			int cantcampos = this.ObtenerCamposBD(this.nombretabla);
			string camp = "";
			loc_SQLCmd = "UPDATE " + this.NombreTabla + " SET " + valoresdecampos + " WHERE " + condicion;			
			loc_Comm.CommandText = loc_SQLCmd;
			
			int iResultado = 0;
			
			try {
				iResultado = loc_Comm.ExecuteNonQuery();
				loc_Transaction.Commit();
			//	System.Windows.Forms.MessageBox.Show("Registro ingresado", "Mensaje", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
			} catch (Exception ex) {
				loc_Transaction.Rollback();
			//	System.Windows.Forms.MessageBox.Show("No se puede Insertar", "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
				//return;	
			}			
						
			return Convert.ToBoolean(iResultado);			 
		}
		#endregion
		
		#region Insertar
		public bool Insertar()
		{
			MySqlCommand loc_Comm = new MySqlCommand();
			MySqlTransaction loc_Transaction = DBConn.BeginTransaction();

			loc_Comm.Connection = DBConn;
			String loc_SQLCmd = "";
			//loc_SQLCmd = "INSERT INTO tablaprueba(campocharvar, campodate) VALUES ('" + nombre + "', '" + string.Format("{0:dd/MM/yyyy}", fecha) + "')";
			loc_SQLCmd = "INSERT INTO " + this.NombreTabla + " (codigo, insumo, cantidad, pie, fechaing, remito, proveedor) VALUES (@codigo, @insumo, @cantidad, @pie, @fechaing, @remito, @proveedor)";
		
			loc_Comm.CommandText = loc_SQLCmd;
			loc_Comm.Parameters.Add(new MySqlParameter("@codigo",DbType.String)).Value = this.C_codigo;
			loc_Comm.Parameters.Add(new MySqlParameter("@insumo",DbType.String)).Value = this.C_insumo;
			loc_Comm.Parameters.Add(new MySqlParameter("@cantidad",DbType.Double)).Value = this.C_cantidad;
			loc_Comm.Parameters.Add(new MySqlParameter("@pie",DbType.Double)).Value = this.C_pie;
			loc_Comm.Parameters.Add(new MySqlParameter("@fechaing",DbType.Date)).Value = Convert.ToDateTime(this.C_fechaing);
			loc_Comm.Parameters.Add(new MySqlParameter("@remito",DbType.String)).Value = this.C_remito;
			loc_Comm.Parameters.Add(new MySqlParameter("@proveedor",DbType.String)).Value = this.C_proveedor;

			int iResultado = 0;
			
			try {
				iResultado = loc_Comm.ExecuteNonQuery();
				loc_Transaction.Commit();
				System.Windows.Forms.MessageBox.Show("Registro ingresado", "Mensaje", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
			} catch (Exception ex) {
				loc_Transaction.Rollback();
				System.Windows.Forms.MessageBox.Show("No se puede Insertar", "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
				//return;	
			}			
						
			return Convert.ToBoolean(iResultado);
		}				
		#endregion

		#region consultar
		public int consultar(string cadena)
		{
			//System.Windows.Forms.MessageBox.Show(cadena);
			Tabla.Clear();
			MySqlCommand cmdNQ2 = new MySqlCommand(cadena, DBConn);
			MySqlDataAdapter loc_da2 = new MySqlDataAdapter(cmdNQ2);
			loc_da2.Fill(Tabla);
		
			
			return Tabla.Rows.Count;
		}
		#endregion

		#region consultar valor campo
		public string consultarValorCampo(string cadena, string condicion, string campoadevolver, int fila)
		{
			Tabla.Clear();
			MySqlCommand cmdNQ2 = new MySqlCommand(cadena + " WHERE " + condicion + " ORDER BY " + campoadevolver, DBConn);
			//MessageBox.Show(cadena + " WHERE " + condicion + " ORDER BY " + campoadevolver);
			MySqlDataAdapter loc_da2 = new MySqlDataAdapter(cmdNQ2);
			loc_da2.Fill(Tabla);
			if(Tabla.Rows.Count != 0)
			{
				return Tabla.Rows[fila][campoadevolver].ToString();
			} else {
				return "";
			}
		}
		#endregion
		
		#region consultar MAX id
		/// <summary>
		/// Consigue el valor maximo de id + 1
		/// </summary>
		/// <param name="campoidtabla">Campo id de la tabla</param>
		public int ConsultarMAXID(string campoidtabla)
		{
			Tabla.Clear();
			int mid;
			MySqlCommand cmdNQ2 = new MySqlCommand("SELECT MAX(" + campoidtabla + ") FROM " + this.NombreTabla, DBConn);
			MySqlDataAdapter loc_da2 = new MySqlDataAdapter(cmdNQ2);
			loc_da2.Fill(Tabla);
			if(Tabla.Rows[0]["max"].ToString() == "")
			{
				mid = 1; 	
			} else {
				mid = int.Parse(Tabla.Rows[0]["max"].ToString()) + 1;
			}
			return mid;			
		}
		
		#endregion
		
		#region Obtener Campos
		public int ObtenerCamposBD (string tabla_a_consultar)
		{
			DataTable TablaBD = new DataTable();
			MySqlCommand cmdNQ2 = new MySqlCommand("SELECT * FROM information_schema.columns WHERE table_name = '" + tabla_a_consultar + "'", DBConn);
			MySqlDataAdapter loc_da2 = new MySqlDataAdapter(cmdNQ2);
			loc_da2.Fill(TablaBD);			
			for(int x=0; x<=TablaBD.Rows.Count-1; x++)
			{
				camposBD[x] = TablaBD.Rows[x]["column_name"].ToString();
			}
			return TablaBD.Rows.Count;			
		}
		#endregion
		
		#region Mostrar Registro
		public int mostrarRegistro(int registro, string campodeid)
		{

			Tabla.Clear();
			//DataTable loc_dt2 = new DataTable();
			//System.Windows.Forms.MessageBox.Show("SELECT * FROM " + this.NombreTabla + " WHERE " + campodeid + " = " + registro);
			MySqlCommand cmdNQ2 = new MySqlCommand("SELECT * FROM " + this.NombreTabla + " WHERE " + campodeid + " = " + registro, DBConn);
			MySqlDataAdapter loc_da2 = new MySqlDataAdapter(cmdNQ2);
			loc_da2.Fill(Tabla);

			//this.C_codigo = Tabla.Rows[0]["codigo"].ToString();
			//this.C_insumo = Tabla.Rows[0]["insumo"].ToString();
			//this.C_cantidad = Tabla.Rows[0]["cantidad"].ToString();
			//this.C_pie = Tabla.Rows[0]["pie"].ToString();
			//this.C_fechaing = Convert.ToDateTime(Tabla.Rows[0]["fechaing"]).ToShortDateString() ;
			//this.C_remito = Tabla.Rows[0]["remito"].ToString();
			//this.C_proveedor = Tabla.Rows[0]["proveedor"].ToString();
			

			int cbd = this.ObtenerCamposBD(this.NombreTabla);
						

			for(int rr=0; rr<=cbd-1;rr++)
			{

				this.valorcampoBD[rr] = Tabla.Rows[0][this.camposBD[rr]].ToString();

			}
			
			return registro;
			
		}
		#endregion
		
		#region Navegar Registro
		public int navegarRegistro(int registro, string campodeid, string sentido)
		{
			string cadena;
			if(sentido=="<")
			{
				cadena = "SELECT * FROM " + this.NombreTabla + " WHERE " + campodeid + sentido + registro.ToString() + " ORDER BY id DESC";
			} else {
				cadena = "SELECT * FROM " + this.NombreTabla + " WHERE " + campodeid + sentido + registro.ToString();
			}
			DataTable loc_dt2 = new DataTable();
			MySqlCommand cmdNQ2 = new MySqlCommand(cadena, DBConn);
			MySqlDataAdapter loc_da2 = new MySqlDataAdapter(cmdNQ2);
			loc_da2.Fill(loc_dt2);
			
			//if(registro==1 && sentido=="<")
			//	return loc_dt2.Rows.Count;
			
			if(loc_dt2.Rows.Count>0)
			{
				this.C_codigo = loc_dt2.Rows[0]["codigo"].ToString();
				this.C_insumo = loc_dt2.Rows[0]["insumo"].ToString();
				this.C_cantidad = loc_dt2.Rows[0]["cantidad"].ToString();
				this.C_pie = loc_dt2.Rows[0]["pie"].ToString();
				this.C_fechaing = Convert.ToDateTime(loc_dt2.Rows[0]["fechaing"]).ToShortDateString() ;
				this.C_remito = loc_dt2.Rows[0]["remito"].ToString();
				this.C_proveedor = loc_dt2.Rows[0]["proveedor"].ToString();				
			}
			
			
			return loc_dt2.Rows.Count;
		
			
		}		
		#endregion
		
		#region Borrar Registro
		/// <summary>
		/// Borra Registro por condicion 
		/// </summary>
		/// <param name="condicion">Ejemplo campo = valorcampo</param>
		/// <param name="ensilencio">si es false muestra aviso</param>
		/// <returns></returns>
		public bool BorrarRegistro(string condicion, bool ensilencio)
		{
			MySqlCommand loc_Comm = new MySqlCommand();
			MySqlTransaction loc_Transaction = DBConn.BeginTransaction();

			loc_Comm.Connection = DBConn;
			String loc_SQLCmd = "";
			loc_SQLCmd = "DELETE FROM " + this.NombreTabla + " WHERE " + condicion;
			loc_Comm.CommandText = loc_SQLCmd;
			int iResultado = 0;
			
			try {
				iResultado = loc_Comm.ExecuteNonQuery();
				loc_Transaction.Commit();
				if(iResultado==1 && ensilencio == false)
				{
					System.Windows.Forms.MessageBox.Show("Registro/s Borrado/s", "Mensaje", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
				} 
			} catch (Exception ex) {
				loc_Transaction.Rollback();
				System.Windows.Forms.MessageBox.Show("No se puede Borrar", "Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
				//return;	
			}			
						
			return Convert.ToBoolean(iResultado);			
		}
		#endregion		
		
	}
}
